2 research outputs found

    Lightweight Massively Parallel Suffix Array Construction

    Get PDF
    The suffix array is an array of sorted suffixes in lexicographic order, where each sorted suffix is represented by its starting position in the input string. It is a fundamental data structure that finds various applications in areas such as string processing, text indexing, data compression, computational biology, and many more. Over the last three decades, researchers have proposed a broad spectrum of suffix array construction algorithms (SACAs). However, the majority of SACAs were implemented using sequential and parallel programming models. The maturity of GPU programming opened doors to the development of massively parallel GPU SACAs that outperform the fastest versions of suffix sorting algorithms optimized for the CPU parallel computing. Over the last five years, several GPU SACA approaches were proposed and implemented. They prioritized the running time over lightweight design. In this thesis, we design and implement a lightweight massively parallel SACA on the GPU using the prefix-doubling technique. Our prefix-doubling implementation is memory-efficient and can successfully construct the suffix array for input strings as large as 640 megabytes (MB) on Tesla P100 GPU. On large datasets, our implementation achieves a speedup of 7-16x over the fastest, highly optimized, OpenMP-accelerated suffix array constructor, libdivsufsort, that leverages the CPU shared memory parallelism. The performance of our algorithm relies on several high-performance parallel primitives such as radix sort, conditional filtering, inclusive prefix sum, random memory scattering, and segmented sort. We evaluate the performance of our implementation over a variety of real-world datasets with respect to its runtime, throughput, memory usage, and scalability. We compare our results against libdivsufsort that we run on a Haswell compute node equipped with 24 cores. Our GPU SACA is simple and compact, consisting of less than 300 lines of readable and effective source code. Additionally, we design and implement a fast and lightweight algorithm for checking the correctness of the suffix array

    MMORPG Development for Android Platform

    Get PDF
    The goal of the project was to develop and deploy an Android platform architecture for a turn-based MMORPG. The task included the development of the architecture which should satisfy a client-server model, provide all necessary functionality to interact with a remote server machine and add interactivity through the design and styling of the graphical user interface. In addition to that, the development process involved the engineering of the game world model and the integration of the Observer pattern and the communication protocol. The report describes the process of multiplayer game development, properties and features of the selected technologies, guides through the architectural structure of the project and reviews the implemented functionalities. The project was carried out using Android platform framework. An integrated development environment was Eclipse software. The main programming languages were Java and XML. The development process was divided into two parts: client side programming and server side programming. The report emphasizes the client-side development. A multifunctional multiplayer Android game architecture, combined with social role-playing features was created. In its current state the game supports the authentication and registration of players, character selection procedure, character inventory and battle statistics, lo-cation-specific operations, duel request generation, fight instance and logic, active duels list and location players list. The game supports a large number of simultaneous connections and can withstand the load of hundreds of online players due to the features of NIO technology
    corecore